home *** CD-ROM | disk | FTP | other *** search
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- >
-
- <xsl:output method="text"/>
-
- <xsl:variable name="theNumber" select="20001123"/>
-
- <xsl:template match="/">
- <xsl:call-template name="binSearch">
- <xsl:with-param name="argNumber" select="$theNumber"/>
- <xsl:with-param name="nodeSet" select="dates/date/@value"/>
- <xsl:with-param name="First" select="1"/>
- <xsl:with-param name="Last" select="count(dates/date/@value)"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="binSearch">
- <xsl:param name="argNumber" select="-Infinity"/>
- <xsl:param name="nodeSet" select="/.."/>
- <xsl:param name="First" select="Infinity"/>
- <xsl:param name="Last" select="0"/>
-
- <xsl:choose>
- <xsl:when test="$First > $Last">
- -1
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="Mid" select="floor(($First + $Last) div 2)"/>
-
- <xsl:choose>
- <xsl:when test="$argNumber = $nodeSet[$Mid]">
- <xsl:value-of select="$Mid"/>
- </xsl:when>
- <xsl:when test="$argNumber < $nodeSet[$Mid]">
- <xsl:call-template name="binSearch">
- <xsl:with-param name="argNumber" select="$argNumber"/>
- <xsl:with-param name="nodeSet" select="$nodeSet"/>
- <xsl:with-param name="First" select="$First"/>
- <xsl:with-param name="Last" select="$Mid - 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$argNumber > $nodeSet[$Mid]">
- <xsl:call-template name="binSearch">
- <xsl:with-param name="argNumber" select="$argNumber"/>
- <xsl:with-param name="nodeSet" select="$nodeSet"/>
- <xsl:with-param name="First" select="$Mid + 1"/>
- <xsl:with-param name="Last" select="$Last"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- ERRROR
- </xsl:otherwise>
-
- </xsl:choose>
- </xsl:otherwise>
-
-
- </xsl:choose>
- </xsl:template>
-
-
- </xsl:stylesheet>
-